1
Paradoks Kinerja: Mengapa Kode yang Benar Justru Lambat
AI023Lesson 6
00:00

Paradoks Paradoks Kinerja menyatakan bahwa kernel yang sempurna secara matematis, seperti $out = x + y$, justru dapat berkinerja lebih buruk daripada loop CPU jika gagal menyerap biaya tetap dari perangkat keras GPU. Hal ini sering muncul sebagai Biaya Pemulaan.

1. Kesalahan "Ketepatan"

Ketepatan fungsional bukanlah pengganti efisiensi. Meskipun kode Triton Anda dengan benar mendistribusikan pekerjaan ke ribuan thread, jika jumlah total pekerjaan (N) kecil, GPU akan tetap tidak termanfaatkan secara optimal. Perangkat keras menghabiskan lebih banyak waktu dalam transisi status daripada melakukan perhitungan sebenarnya.

2. Perangkap Pengukuran Python

Mengukur kinerja kode GPU dari Python menggunakan time.time() adalah berbahaya. Panggilan GPU bersifat asinkron; Python hanya mengantrekan perintah dan melanjutkan. Tanpa torch.cuda.synchronize(), Anda mengukur waktu antrean. Dengan sinkronisasi, Anda mengukur latensi Host-to-Device, yang sering kali 10 kali lebih lama daripada eksekusi kernel itu sendiri.

Overhead Python/Driver (Biaya Pemulaan)KernelWaktu (ms)

3. Latensi vs. Throughput

Untuk mengatasi paradoks ini, Anda harus menyediakan cukup banyak pekerjaan agar "menyembunyikan" latensi pemulaan. Ini adalah transisi dari mode terbatas oleh latensi yang dibatasi oleh bus CPU-GPU menjadi mode terbatas oleh throughput yang dibatasi oleh memori atau komputasi GPU.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>